<html>
    <head>
        <title>定义状态检查器</title>
    </head>
    <body>
        <script>
            /*
                    一、定义状态检查器

                            任何类都可以继承IHasSimpleStateCheckers以支持"状态检查"。

                                public class MyObject : IHasSimpleStateCheckers<MyObject>
                                {
                                    public int  Id { get; set; }

                                    public List<ISimpleStateChecker<MyObject>> SimpleStateCheckers { get; }

                                    public MyObject()
                                    {
                                        SimpleStateCheckers = new List<ISimpleStateChecker<MyObject>>();
                                    }
                                }


                            MyObject类包含状态检查器的集合，你可以将自定义检查器添加到其中。

                                // 定义状态检查器
                                public class MyObjectStateChecker : ISimpleStateChecker<MyObject>  // 实现ISimpleStateChecker接口，以便检查MyObject的状态。
                                {
                                    public Task<bool> IsEnabledAsync(SimpleStateCheckerContext<MyObject> context)
                                    {
                                        var currentUser = context.ServiceProvider.GetRequiredService<ICurrentUser>();
                                        return Task.FromResult(currentUser.IsInRole("Admin"));
                                    }
                                }


                                var myobj = new MyObject()
                                {
                                    Id = 100
                                };

                                myobj.SimpleStateCheckers.Add(new MyObjectStateChecker()); // 将状态检查器添加到MyObject实例。
                */
        </script>
    </body>
</html>